The present disclosure relates generally to computer software testing, and more particularly to partitioning computer software applications when performing static analysis thereof.
One of the challenges that may be faced by tools that perform static analysis of computer software applications may be scalability. When performing static analysis on computer software applications with large code bases, static analysis tools may become overwhelmed with information and risk crashing, unless preventive measures are taken. Such measures may involve using coarser forms of analysis whose signal-to-noise ratios may be very low, and thus may be of limited value, or that may employ unsound bounds, and thereby may provide partial and questionable results, particularly when related to testing security or finding bugs. Various heuristics have been proposed to enable static analysis tools to better cope with large computer software applications. However, the use of such heuristics may come at the cost of accuracy and/or precision.